home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / MoviesFormat.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  21.4 KB  |  553 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MoviesFormat.a
  3. ;
  4. ;    Contains:    QuickTime Interfaces.
  5. ;
  6. ;    Version:    Technology:    QuickTime 3.0
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__MOVIESFORMAT__') = 'UNDEFINED' THEN
  18. __MOVIESFORMAT__ SET 1
  19.  
  20.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  21.     include 'MacTypes.a'
  22.     ENDIF
  23.     IF &TYPE('__MOVIES__') = 'UNDEFINED' THEN
  24.     include 'Movies.a'
  25.     ENDIF
  26.  
  27.  
  28. kMovieVersion                    EQU        0                    ; version number of the format here described 
  29. ; ****************************************
  30. ;*
  31. ;*   General Types -
  32. ;*        These types are used in more than one of the
  33. ;*        directory types.
  34. ;*
  35. ;***************************************
  36.  
  37. ;  MoviesUserData is the type used for user data in movie and track directories 
  38. MoviesUserData            RECORD 0
  39. size                     ds.l    1                ; offset: $0 (0)        ;  size of this user data 
  40. udType                     ds.l    1                ; offset: $4 (4)        ;  type of user data 
  41. data                     ds.b    1                ; offset: $8 (8) <-- really an array of length one ;  the user data 
  42.                          ORG 10
  43. sizeof                     EQU *                    ; size:   $A (10)
  44.                         ENDR
  45. UserDataAtom            RECORD 0
  46. size                     ds.l    1                ; offset: $0 (0)
  47. atomType                 ds.l    1                ; offset: $4 (4)
  48. userData                 ds        MoviesUserData ; offset: $8 (8) <-- really an array of length one
  49. sizeof                     EQU *                    ; size:   $12 (18)
  50.                         ENDR
  51. ;  MoviesDataDescription tells us where the data for the movie or track lives.
  52. ;   The data can follow the directory, be in the datafork of the same file as the directory resource,
  53. ;   be in the resource fork of the same file as the directory resource, be in another file in the
  54. ;   data fork or resource fork, or require a specific bottleneck to fetch the data. 
  55.  
  56. ; ****************************************
  57. ;*
  58. ;*   MediaDirectory information -
  59. ;*        The MediaDirectory is tightly coupled to the data.
  60. ;*
  61. ;***************************************
  62.  
  63.  
  64. SampleDescriptionAtom    RECORD 0
  65. size                     ds.l    1                ; offset: $0 (0)
  66. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsd' 
  67. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  68. numEntries                 ds.l    1                ; offset: $C (12)
  69. sampleDescTable             ds        SampleDescription ; offset: $10 (16) <-- really an array of length one
  70. sizeof                     EQU *                    ; size:   $20 (32)
  71.                         ENDR
  72. ;  TimeToSampleNum maps physical sample time to physical sample number. 
  73. TimeToSampleNum            RECORD 0
  74. sampleCount                 ds.l    1                ; offset: $0 (0)
  75. sampleDuration             ds.l    1                ; offset: $4 (4)
  76. sizeof                     EQU *                    ; size:   $8 (8)
  77.                         ENDR
  78. TimeToSampleNumAtom        RECORD 0
  79. size                     ds.l    1                ; offset: $0 (0)
  80. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stts' 
  81. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  82. numEntries                 ds.l    1                ; offset: $C (12)
  83. timeToSampleNumTable     ds        TimeToSampleNum ; offset: $10 (16) <-- really an array of length one
  84. sizeof                     EQU *                    ; size:   $18 (24)
  85.                         ENDR
  86. ;  SyncSamples is a list of the physical samples which are self contained. 
  87. SyncSampleAtom            RECORD 0
  88. size                     ds.l    1                ; offset: $0 (0)
  89. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stss' 
  90. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  91. numEntries                 ds.l    1                ; offset: $C (12)
  92. syncSampleTable             ds.l    1                ; offset: $10 (16) <-- really an array of length one
  93. sizeof                     EQU *                    ; size:   $14 (20)
  94.                         ENDR
  95. ;  SampleToChunk maps physical sample number to chunk number. 
  96. ;  same as SampleToChunk, but redundant first sample is removed 
  97. SampleToChunk            RECORD 0
  98. firstChunk                 ds.l    1                ; offset: $0 (0)
  99. samplesPerChunk             ds.l    1                ; offset: $4 (4)
  100. sampleDescriptionID         ds.l    1                ; offset: $8 (8)
  101. sizeof                     EQU *                    ; size:   $C (12)
  102.                         ENDR
  103. SampleToChunkAtom        RECORD 0
  104. size                     ds.l    1                ; offset: $0 (0)
  105. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsc' 
  106. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  107. numEntries                 ds.l    1                ; offset: $C (12)
  108. sampleToChunkTable         ds        SampleToChunk    ; offset: $10 (16) <-- really an array of length one
  109. sizeof                     EQU *                    ; size:   $1C (28)
  110.                         ENDR
  111. ChunkOffsetAtom            RECORD 0
  112. size                     ds.l    1                ; offset: $0 (0)
  113. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stco' 
  114. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  115. numEntries                 ds.l    1                ; offset: $C (12)
  116. chunkOffsetTable         ds.l    1                ; offset: $10 (16) <-- really an array of length one
  117. sizeof                     EQU *                    ; size:   $14 (20)
  118.                         ENDR
  119. SampleSizeAtom            RECORD 0
  120. size                     ds.l    1                ; offset: $0 (0)
  121. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsz' 
  122. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  123. sampleSize                 ds.l    1                ; offset: $C (12)
  124. numEntries                 ds.l    1                ; offset: $10 (16)
  125. sampleSizeTable             ds.l    1                ; offset: $14 (20) <-- really an array of length one
  126. sizeof                     EQU *                    ; size:   $18 (24)
  127.                         ENDR
  128. ShadowSync                RECORD 0
  129. fdSampleNum                 ds.l    1                ; offset: $0 (0)
  130. syncSampleNum             ds.l    1                ; offset: $4 (4)
  131. sizeof                     EQU *                    ; size:   $8 (8)
  132.                         ENDR
  133. ShadowSyncAtom            RECORD 0
  134. size                     ds.l    1                ; offset: $0 (0)
  135. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stsz' 
  136. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  137. numEntries                 ds.l    1                ; offset: $C (12)
  138. shadowSyncTable             ds        ShadowSync        ; offset: $10 (16) <-- really an array of length one
  139. sizeof                     EQU *                    ; size:   $18 (24)
  140.                         ENDR
  141. SampleTableAtom            RECORD 0
  142. size                     ds.l    1                ; offset: $0 (0)
  143. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'stbl' 
  144. sampleDescription         ds        SampleDescriptionAtom ; offset: $8 (8)
  145. timeToSampleNum             ds        TimeToSampleNumAtom ; offset: $28 (40)
  146. sampleToChunk             ds        SampleToChunkAtom ; offset: $40 (64)
  147. syncSample                 ds        SyncSampleAtom ; offset: $5C (92)
  148. sampleSize                 ds        SampleSizeAtom ; offset: $70 (112)
  149. chunkOffset                 ds        ChunkOffsetAtom ; offset: $88 (136)
  150. shadowSync                 ds        ShadowSyncAtom ; offset: $9C (156)
  151. sizeof                     EQU *                    ; size:   $B4 (180)
  152.                         ENDR
  153. PublicHandlerInfo        RECORD 0
  154. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  155. componentType             ds.l    1                ; offset: $4 (4)
  156. componentSubType         ds.l    1                ; offset: $8 (8)
  157. componentManufacturer     ds.l    1                ; offset: $C (12)
  158. componentFlags             ds.l    1                ; offset: $10 (16)
  159. componentFlagsMask         ds.l    1                ; offset: $14 (20)
  160. componentName             ds.b    1                ; offset: $18 (24) <-- really an array of length one
  161.                          ORG 26
  162. sizeof                     EQU *                    ; size:   $1A (26)
  163.                         ENDR
  164. HandlerAtom                RECORD 0
  165. size                     ds.l    1                ; offset: $0 (0)
  166. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'hdlr' 
  167. hInfo                     ds        PublicHandlerInfo ; offset: $8 (8)
  168. sizeof                     EQU *                    ; size:   $22 (34)
  169.                         ENDR
  170. ;  a data reference is a private structure 
  171. ; typedef long                             DataRefAtom
  172.  
  173. DataInfoAtom            RECORD 0
  174. size                     ds.l    1                ; offset: $0 (0)
  175. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'dinf' 
  176. dataRef                     ds.l    1                ; offset: $8 (8)
  177. sizeof                     EQU *                    ; size:   $C (12)
  178.                         ENDR
  179. RgnAtom                    RECORD 0
  180. size                     ds.l    1                ; offset: $0 (0)
  181. atomType                 ds.l    1                ; offset: $4 (4)
  182. rgnSize                     ds.w    1                ; offset: $8 (8)
  183. rgnBBox                     ds        Rect            ; offset: $A (10)
  184. data                     ds.b    1                ; offset: $12 (18) <-- really an array of length one
  185.                          ORG 20
  186. sizeof                     EQU *                    ; size:   $14 (20)
  187.                         ENDR
  188. MatteCompressedAtom        RECORD 0
  189. size                     ds.l    1                ; offset: $0 (0)
  190. atomType                 ds.l    1                ; offset: $4 (4)
  191. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  192. matteImageDescription     ds        ImageDescription ; offset: $C (12)
  193. matteData                 ds.b    1                ; offset: $62 (98) <-- really an array of length one
  194.                          ORG 100
  195. sizeof                     EQU *                    ; size:   $64 (100)
  196.                         ENDR
  197. MatteAtom                RECORD 0
  198. size                     ds.l    1                ; offset: $0 (0)
  199. atomType                 ds.l    1                ; offset: $4 (4)
  200. aCompressedMatte         ds        MatteCompressedAtom ; offset: $8 (8)
  201. sizeof                     EQU *                    ; size:   $6C (108)
  202.                         ENDR
  203. ClippingAtom            RECORD 0
  204. size                     ds.l    1                ; offset: $0 (0)
  205. atomType                 ds.l    1                ; offset: $4 (4)
  206. aRgnClip                 ds        RgnAtom            ; offset: $8 (8)
  207. sizeof                     EQU *                    ; size:   $1C (28)
  208.                         ENDR
  209. ; ***********************
  210. ;* Media Info Example Structures
  211. ;**********************
  212.  
  213.  
  214. VideoMediaInfoHeader    RECORD 0
  215. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  216. graphicsMode             ds.w    1                ; offset: $4 (4)        ;  for QD - transfer mode 
  217. opColorRed                 ds.w    1                ; offset: $6 (6)        ;  opcolor for transfer mode 
  218. opColorGreen             ds.w    1                ; offset: $8 (8)
  219. opColorBlue                 ds.w    1                ; offset: $A (10)
  220. sizeof                     EQU *                    ; size:   $C (12)
  221.                         ENDR
  222. VideoMediaInfoHeaderAtom RECORD 0
  223. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  224. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'vmhd' 
  225. vmiHeader                 ds        VideoMediaInfoHeader ; offset: $8 (8)
  226. sizeof                     EQU *                    ; size:   $14 (20)
  227.                         ENDR
  228. VideoMediaInfo            RECORD 0
  229. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  230. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'minf' 
  231. header                     ds        VideoMediaInfoHeaderAtom ; offset: $8 (8)
  232. dataHandler                 ds        HandlerAtom        ; offset: $1C (28)
  233. dataInfo                 ds        DataInfoAtom    ; offset: $3E (62)
  234. sampleTable                 ds        SampleTableAtom ; offset: $4A (74)
  235. sizeof                     EQU *                    ; size:   $FE (254)
  236.                         ENDR
  237. SoundMediaInfoHeader    RECORD 0
  238. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  239. balance                     ds.w    1                ; offset: $4 (4)
  240. rsrvd                     ds.w    1                ; offset: $6 (6)
  241. sizeof                     EQU *                    ; size:   $8 (8)
  242.                         ENDR
  243. SoundMediaInfoHeaderAtom RECORD 0
  244. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  245. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'vmhd' 
  246. smiHeader                 ds        SoundMediaInfoHeader ; offset: $8 (8)
  247. sizeof                     EQU *                    ; size:   $10 (16)
  248.                         ENDR
  249. SoundMediaInfo            RECORD 0
  250. size                     ds.l    1                ; offset: $0 (0)        ;  size of Media info 
  251. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'minf' 
  252. header                     ds        SoundMediaInfoHeaderAtom ; offset: $8 (8)
  253. dataHandler                 ds        HandlerAtom        ; offset: $18 (24)
  254. dataReference             ds.l    1                ; offset: $3A (58)
  255. sampleTable                 ds        SampleTableAtom ; offset: $3E (62)
  256. sizeof                     EQU *                    ; size:   $F2 (242)
  257.                         ENDR
  258. ;  whatever data the media handler needs goes after the atomType 
  259. MediaInfo                RECORD 0
  260. size                     ds.l    1                ; offset: $0 (0)
  261. atomType                 ds.l    1                ; offset: $4 (4)
  262. sizeof                     EQU *                    ; size:   $8 (8)
  263.                         ENDR
  264. ; ***********************
  265. ;* Media Directory Structures
  266. ;**********************
  267.  
  268. MediaHeader                RECORD 0
  269. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  270. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  271. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  272. timeScale                 ds.l    1                ; offset: $C (12)        ;  start time for Media (Media time) 
  273. duration                 ds.l    1                ; offset: $10 (16)        ;  length of Media (Media time) 
  274. language                 ds.w    1                ; offset: $14 (20)
  275. quality                     ds.w    1                ; offset: $16 (22)
  276. sizeof                     EQU *                    ; size:   $18 (24)
  277.                         ENDR
  278. MediaHeaderAtom            RECORD 0
  279. size                     ds.l    1                ; offset: $0 (0)
  280. atomType                 ds.l    1                ; offset: $4 (4)
  281. header                     ds        MediaHeader        ; offset: $8 (8)
  282. sizeof                     EQU *                    ; size:   $20 (32)
  283.                         ENDR
  284. MediaDirectory            RECORD 0
  285. size                     ds.l    1                ; offset: $0 (0)
  286. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'mdia' 
  287. mediaHeader                 ds        MediaHeaderAtom ; offset: $8 (8)        ;  standard Media information 
  288. mediaHandler             ds        HandlerAtom        ; offset: $28 (40)
  289. mediaInfo                 ds        MediaInfo        ; offset: $4A (74)
  290. sizeof                     EQU *                    ; size:   $52 (82)
  291.                         ENDR
  292. ; ***********************
  293. ;* Track Structures
  294. ;**********************
  295.  
  296.  
  297. TrackEnable                        EQU        $01
  298. TrackInMovie                    EQU        $02
  299. TrackInPreview                    EQU        $04
  300. TrackInPoster                    EQU        $08
  301. TrackHeader                RECORD 0
  302. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  303. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  304. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  305. trackID                     ds.l    1                ; offset: $C (12)
  306. reserved1                 ds.l    1                ; offset: $10 (16)
  307. duration                 ds.l    1                ; offset: $14 (20)        ;  length of track (track time) 
  308. reserved2                 ds.l    1                ; offset: $18 (24)
  309. reserved3                 ds.l    1                ; offset: $1C (28)
  310. layer                     ds.w    1                ; offset: $20 (32)
  311. alternateGroup             ds.w    1                ; offset: $22 (34)
  312. volume                     ds.w    1                ; offset: $24 (36)
  313. reserved4                 ds.w    1                ; offset: $26 (38)
  314. matrix                     ds        MatrixRecord    ; offset: $28 (40)
  315. trackWidth                 ds.l    1                ; offset: $4C (76)
  316. trackHeight                 ds.l    1                ; offset: $50 (80)
  317. sizeof                     EQU *                    ; size:   $54 (84)
  318.                         ENDR
  319. TrackHeaderAtom            RECORD 0
  320. size                     ds.l    1                ; offset: $0 (0)        ;  size of track header 
  321. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'tkhd' 
  322. header                     ds        TrackHeader        ; offset: $8 (8)
  323. sizeof                     EQU *                    ; size:   $5C (92)
  324.                         ENDR
  325. EditListType            RECORD 0
  326. trackDuration             ds.l    1                ; offset: $0 (0)
  327. mediaTime                 ds.l    1                ; offset: $4 (4)
  328. mediaRate                 ds.l    1                ; offset: $8 (8)
  329. sizeof                     EQU *                    ; size:   $C (12)
  330.                         ENDR
  331. EditListAtom            RECORD 0
  332. size                     ds.l    1                ; offset: $0 (0)
  333. atomType                 ds.l    1                ; offset: $4 (4)        ;  = elst 
  334. flags                     ds.l    1                ; offset: $8 (8)        ;  1 byte of version / 3 bytes of flags 
  335. numEntries                 ds.l    1                ; offset: $C (12)
  336. editListTable             ds        EditListType    ; offset: $10 (16) <-- really an array of length one
  337. sizeof                     EQU *                    ; size:   $1C (28)
  338.                         ENDR
  339. EditsAtom                RECORD 0
  340. size                     ds.l    1                ; offset: $0 (0)
  341. atomType                 ds.l    1                ; offset: $4 (4)        ;  = edts 
  342. editList                 ds        EditListAtom    ; offset: $8 (8)
  343. sizeof                     EQU *                    ; size:   $24 (36)
  344.                         ENDR
  345. TrackLoadSettings        RECORD 0
  346. preloadStartTime         ds.l    1                ; offset: $0 (0)
  347. preloadDuration             ds.l    1                ; offset: $4 (4)
  348. preloadFlags             ds.l    1                ; offset: $8 (8)
  349. defaultHints             ds.l    1                ; offset: $C (12)
  350. sizeof                     EQU *                    ; size:   $10 (16)
  351.                         ENDR
  352. TrackLoadSettingsAtom    RECORD 0
  353. size                     ds.l    1                ; offset: $0 (0)
  354. atomType                 ds.l    1                ; offset: $4 (4)        ;  = load 
  355. settings                 ds        TrackLoadSettings ; offset: $8 (8)
  356. sizeof                     EQU *                    ; size:   $18 (24)
  357.                         ENDR
  358. TrackDirectory            RECORD 0
  359. size                     ds.l    1                ; offset: $0 (0)
  360. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'trak' 
  361. trackHeader                 ds        TrackHeaderAtom ; offset: $8 (8)        ;  standard track information 
  362. trackClip                 ds        ClippingAtom    ; offset: $64 (100)
  363. edits                     ds        EditsAtom        ; offset: $80 (128)
  364. media                     ds        MediaDirectory ; offset: $A4 (164)
  365. userData                 ds        UserDataAtom    ; offset: $F6 (246)        ;  space for extending with new data types 
  366. sizeof                     EQU *                    ; size:   $108 (264)
  367.                         ENDR
  368. ; ****************************************
  369. ;*
  370. ;*   MovieDirectory -
  371. ;*        The MovieDirectory is the top level structure which
  372. ;*        holds the TrackInstance describing where the
  373. ;*        TrackDirectories are.
  374. ;*
  375. ;***************************************
  376.  
  377. MovieHeader                RECORD 0
  378. flags                     ds.l    1                ; offset: $0 (0)        ;  1 byte of version / 3 bytes of flags 
  379. creationTime             ds.l    1                ; offset: $4 (4)        ;  seconds since Jan 1904 when directory was created 
  380. modificationTime         ds.l    1                ; offset: $8 (8)        ;  seconds since Jan 1904 when directory was appended 
  381. timeScale                 ds.l    1                ; offset: $C (12)        ;  Time specifications 
  382. duration                 ds.l    1                ; offset: $10 (16)
  383. preferredRate             ds.l    1                ; offset: $14 (20)        ;  rate at which to play this movie 
  384. preferredVolume             ds.w    1                ; offset: $18 (24)        ;  volume to play movie at 
  385. reserved1                 ds.w    1                ; offset: $1A (26)
  386. preferredLong1             ds.l    1                ; offset: $1C (28)
  387. preferredLong2             ds.l    1                ; offset: $20 (32)
  388. matrix                     ds        MatrixRecord    ; offset: $24 (36)
  389. previewTime                 ds.l    1                ; offset: $48 (72)        ;  time in track the proxy begins (track time) 
  390. previewDuration             ds.l    1                ; offset: $4C (76)        ;  how long the proxy lasts (track time) 
  391. posterTime                 ds.l    1                ; offset: $50 (80)        ;  time in track the proxy begins (track time) 
  392. selectionTime             ds.l    1                ; offset: $54 (84)        ;  time in track the proxy begins (track time) 
  393. selectionDuration         ds.l    1                ; offset: $58 (88)        ;  time in track the proxy begins (track time) 
  394. currentTime                 ds.l    1                ; offset: $5C (92)        ;  time in track the proxy begins (track time) 
  395. nextTrackID                 ds.l    1                ; offset: $60 (96)        ;  next value to use for a TrackID 
  396. sizeof                     EQU *                    ; size:   $64 (100)
  397.                         ENDR
  398. MovieHeaderAtom            RECORD 0
  399. size                     ds.l    1                ; offset: $0 (0)
  400. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'mvhd' 
  401. header                     ds        MovieHeader        ; offset: $8 (8)
  402. sizeof                     EQU *                    ; size:   $6C (108)
  403.                         ENDR
  404. TrackDirectoryEntry        RECORD 0
  405. trackDirectory             ds        TrackDirectory ; offset: $0 (0)            ;  Track directory information 
  406. sizeof                     EQU *                    ; size:   $108 (264)
  407.                         ENDR
  408. MovieDirectory            RECORD 0
  409. size                     ds.l    1                ; offset: $0 (0)
  410. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'moov' 
  411. header                     ds        MovieHeaderAtom ; offset: $8 (8)
  412. movieClip                 ds        ClippingAtom    ; offset: $74 (116)
  413. ;  Track Directories 
  414. track                     ds        TrackDirectoryEntry ; offset: $90 (144) <-- really an array of length one ;  Track directory information 
  415. ;  User data for Movie 
  416. userData                 ds        UserDataAtom    ; offset: $198 (408)    ;  space for user extensions 
  417. sizeof                     EQU *                    ; size:   $1AA (426)
  418.                         ENDR
  419. ; ****************************************
  420. ;***************************************
  421.  
  422. ;  Movie formats and tags 
  423.  
  424.                                                             ; some system defined format IDs 
  425. MOVIE_TYPE                        EQU        'moov'
  426. TRACK_TYPE                        EQU        'trak'
  427. MEDIA_TYPE                        EQU        'mdia'
  428. VIDEO_TYPE                        EQU        'vide'
  429. SOUND_TYPE                        EQU        'soun'
  430. ;  atom id's 
  431.  
  432. MovieAID                        EQU        'moov'
  433. MovieHeaderAID                    EQU        'mvhd'
  434. ClipAID                            EQU        'clip'
  435. RgnClipAID                        EQU        'crgn'
  436. MatteAID                        EQU        'matt'
  437. MatteCompAID                    EQU        'kmat'
  438. TrackAID                        EQU        'trak'
  439. UserDataAID                        EQU        'udta'
  440. TrackHeaderAID                    EQU        'tkhd'
  441. EditsAID                        EQU        'edts'
  442. EditListAID                        EQU        'elst'
  443. MediaAID                        EQU        'mdia'
  444. MediaHeaderAID                    EQU        'mdhd'
  445. MediaInfoAID                    EQU        'minf'
  446. VideoMediaInfoHeaderAID            EQU        'vmhd'
  447. SoundMediaInfoHeaderAID            EQU        'smhd'
  448. GenericMediaInfoHeaderAID        EQU        'gmhd'
  449. GenericMediaInfoAID                EQU        'gmin'
  450. DataInfoAID                        EQU        'dinf'
  451. DataRefAID                        EQU        'dref'
  452. SampleTableAID                    EQU        'stbl'
  453. STSampleDescAID                    EQU        'stsd'
  454. STTimeToSampAID                    EQU        'stts'
  455. STSyncSampleAID                    EQU        'stss'
  456. STSampleToChunkAID                EQU        'stsc'
  457. STShadowSyncAID                    EQU        'stsh'
  458. HandlerAID                        EQU        'hdlr'
  459. STSampleSizeAID                    EQU        'stsz'
  460. STChunkOffsetAID                EQU        'stco'
  461. STChunkOffset64AID                EQU        'co64'
  462. STSampleIDAID                    EQU        'stid'
  463. DataRefContainerAID                EQU        'drfc'
  464. TrackReferenceAID                EQU        'tref'
  465. ColorTableAID                    EQU        'ctab'
  466. LoadSettingsAID                    EQU        'load'
  467. PropertyAtomAID                    EQU        'code'
  468. InputMapAID                        EQU        'imap'
  469. MovieBufferHintsAID                EQU        'mbfh'
  470. MovieDataRefAliasAID            EQU        'mdra'
  471. SoundLocalizationAID            EQU        'sloc'
  472. CompressedMovieAID                EQU        'cmov'
  473. CompressedMovieDataAID            EQU        'cmvd'
  474. DataCompressionAtomAID            EQU        'dcom'
  475. ReferenceMovieRecordAID            EQU        'rmra'
  476. ReferenceMovieDescriptorAID        EQU        'rmda'
  477. ReferenceMovieDataRefAID        EQU        'rdrf'
  478. ReferenceMovieVersionCheckAID    EQU        'rmvc'
  479. ReferenceMovieDataRateAID        EQU        'rmdr'
  480. ReferenceMovieComponentCheckAID    EQU        'rmcd'
  481. ReferenceMovieQualityAID        EQU        'rmqu'
  482. ;  Text ATOM definitions
  483.  
  484. TextBoxAtom                RECORD 0
  485. size                     ds.l    1                ; offset: $0 (0)
  486. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'tbox' 
  487. textBox                     ds        Rect            ; offset: $8 (8)        ;  New text box (overrides defaultTextBox)
  488. sizeof                     EQU *                    ; size:   $10 (16)
  489.                         ENDR
  490. HiliteAtom                RECORD 0
  491. size                     ds.l    1                ; offset: $0 (0)
  492. atomType                 ds.l    1                ; offset: $4 (4)        ;  = 'hlit' 
  493. selStart                 ds.l    1                ; offset: $8 (8)        ;  hilite selection start character
  494. selEnd                     ds.l    1                ; offset: $C (12)        ;  hilite selection end character
  495. sizeof                     EQU *                    ; size:   $10 (16)
  496.                         ENDR
  497. KaraokeRec                RECORD 0
  498. timeVal                     ds.l    1                ; offset: $0 (0)
  499. beginHilite                 ds.w    1                ; offset: $4 (4)
  500. endHilite                 ds.w    1                ; offset: $6 (6)
  501. sizeof                     EQU *                    ; size:   $8 (8)
  502.                         ENDR
  503. KaraokeAtom                RECORD 0
  504. numEntries                 ds.l    1                ; offset: $0 (0)
  505. karaokeEntries             ds        KaraokeRec        ; offset: $4 (4) <-- really an array of length one
  506. sizeof                     EQU *                    ; size:   $C (12)
  507.                         ENDR
  508. ;  for ReferenceMovieDataRefRecord.flags
  509.  
  510. kDataRefIsSelfContained            EQU        $01
  511. ReferenceMovieDataRefRecord RECORD 0
  512. flags                     ds.l    1                ; offset: $0 (0)
  513. dataRefType                 ds.l    1                ; offset: $4 (4)
  514. dataRefSize                 ds.l    1                ; offset: $8 (8)
  515. dataRef                     ds.b    1                ; offset: $C (12) <-- really an array of length one
  516.                          ORG 14
  517. sizeof                     EQU *                    ; size:   $E (14)
  518.                         ENDR
  519. ;  for VersionCheckRecord.checkType
  520.  
  521. kVersionCheckMin                EQU        0                    ; val1 is the min. version required
  522. kVersionCheckMask                EQU        1                    ; (gestalt return value & val2) must == val1
  523. QTAltVersionCheckRecord    RECORD 0
  524. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0
  525. gestaltTag                 ds.l    1                ; offset: $4 (4)
  526. val1                     ds.l    1                ; offset: $8 (8)
  527. val2                     ds.l    1                ; offset: $C (12)
  528. checkType                 ds.w    1                ; offset: $10 (16)
  529. sizeof                     EQU *                    ; size:   $12 (18)
  530.                         ENDR
  531. ;  some helpful constants for DataRateRecord.dataRate 
  532.  
  533. kDataRate144ModemRate            EQU        1400
  534. kDataRate288ModemRate            EQU        2800
  535. kDataRateISDNRate                EQU        5600
  536. kDataRateDualISDNRate            EQU        11200
  537. kDataRateT1Rate                    EQU        150000
  538. kDataRateInfiniteRate            EQU        $7FFFFFFF
  539. QTAltDataRateRecord        RECORD 0
  540. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0
  541. dataRate                 ds.l    1                ; offset: $4 (4)
  542. sizeof                     EQU *                    ; size:   $8 (8)
  543.                         ENDR
  544. QTAltComponentCheckRecord RECORD 0
  545. flags                     ds.l    1                ; offset: $0 (0)        ;  currently always 0 
  546. cd                         ds        ComponentDescription ; offset: $4 (4)
  547. minVersion                 ds.l    1                ; offset: $18 (24)
  548. sizeof                     EQU *                    ; size:   $1C (28)
  549.                         ENDR
  550.  
  551.     ENDIF ; __MOVIESFORMAT__ 
  552.  
  553.